package busterminal.entity.service;

import java.util.Calendar;

/**
 * Дни недели
 */
public enum DaysOfWeek {

    /**
     * Понедельник
     */
    MONDAY,
    /**
     * Вторник
     */
    TUESDAY,
    /**
     * Среда
     */
    WEDNESDAY,
    /**
     * Четверг
     */
    THURSDAY,
    /**
     * Пятница
     */
    FRIDAY,
    /**
     * Суббота
     */
    SATURDAY,
    /**
     * Воскресенье
     */
    SUNDAY;

    /**
     * Получить строковое представление элементов перечисления
     * @return строка, в которой через запятую указаны значения элементов перечисления
     */
    public static String getValues() {
        StringBuilder values = new StringBuilder();
        for (int i = 0; i < values().length; i++) {
            if (i != values().length - 1) {
                values.append(values()[i]).append(", ");
            } else {
                values.append(values()[i]);
            }
        }
        return values.toString();
    }

    /**
     * Получить сегодняшний день недели
     * @return элемент перечисления соответствующий сегодняшнему дню недели
     */
    public static DaysOfWeek today() {
        Calendar calendar = Calendar.getInstance();
        int offset = calendar.getFirstDayOfWeek();
        int day = calendar.get(Calendar.DAY_OF_WEEK);
        return values()[(day - offset + 7) % 7];
    }
}
